import { defineStore } from "pinia"

//定义一个store,名称要保证全局唯一
export const useCounterStore = defineStore("counterStore", {
  //全局状态
  state: () => ({
    //定义数据
    counter: 0
  }),
  //Action 类似于 Vue 的 methods，用于更改状态。它们可以使用defineStore() 中的actions 属性定义。
  //并且它们分成适合定义业务逻辑
  actions: {
    //counter 值增加1
    increment() {
        console.log("actions 方法改变state的值")
      this.counter++
    },
    async add100():Promise<number>{
        const result = <number>await new Promise((resolve)=>{
            setTimeout(()=>{
                resolve(100)
            },2000)
        })
        this.counter += result;
        return this.counter
    }
  },
    //Getter 完全等同于 Store 状态的 计算值，计算属性
  getters: {
    /**
     * 计算当前计数值的两倍。
     * @returns 返回当前计数值的两倍。
     */
    doubleCount(): number {
      return this.counter * 2
    }
  },
})
